xm-test: fix network13 test (protocol and extensions)
authorKeir Fraser <keir.fraser@citrix.com>
Wed, 5 Aug 2009 12:38:38 +0000 (13:38 +0100)
committerKeir Fraser <keir.fraser@citrix.com>
Wed, 5 Aug 2009 12:38:38 +0000 (13:38 +0100)
Attached there is a patch that fixes the used protocol (was udp - but
nobody was listening...) to icmp echo and added the extension, that
the dom0 and the other guest ips are also pinged.
Because of the many different scenarios (three nested loops) over
packet sizes, two guests and different ip addresses, one run of this
test case takes now about 4.5 minutes.

Signed-off-by: Andreas Florath <xen@flonatel.org>
tools/xm-test/lib/XmTestLib/NetConfig.py
tools/xm-test/lib/XmTestLib/XenDevice.py
tools/xm-test/tests/network/13_network_domU_udp_pos.py

index 857a9a5cca7a6f4c64cda18da7dc74e4705f8bba..21be40db4821db1d1a4443261ec1271999ac6ffb 100644 (file)
@@ -143,7 +143,7 @@ class NetConfig:
         for line in lines:
             ip = re.search('(\d+\.\d+\.\d+\.\d+)', line)
             if ip and self.isIPInRange(ip.group(1)) == True:
-                dcmd = 'ip addr del %s dev %s' % (ip.group(1), DOM0_INTF)
+                dcmd = 'ip addr del %s/32 dev %s' % (ip.group(1), DOM0_INTF)
                 dstatus, doutput = traceCommand(dcmd)
                 if dstatus:
                     raise NetworkError("Failed to remove %s aliases: %d" %
index 79dfbfc73af1e00e7ed419e3eb6cab29baa13be9..688b39e54386daad78723ba18fff6db1a95d5d39 100644 (file)
@@ -217,7 +217,7 @@ class XenNetDevice(XenDevice):
     def addDom0AliasCmd(self, dev=DOM0_INTF):
         # Method to add start and remove dom0 alias cmds
         acmd = 'ip addr add %s dev %s' % (self.dom0_alias_ip, dev)
-        rcmd = 'ip addr del %s dev %s' % (self.dom0_alias_ip, dev) 
+        rcmd = 'ip addr del %s/32 dev %s' % (self.dom0_alias_ip, dev) 
         aliascmd = XenNetDevCmd(self, addCmd=acmd, removeCmd=rcmd)
 
         self.dom0_cmds.append(aliascmd)
index b247267f25b0a1cc3565117a8fe6d288225637b1..140c2291c9a98f65fa7b0b3fbc0181fd0c1dd90a 100644 (file)
@@ -1,14 +1,16 @@
 #!/usr/bin/python
 
 # Copyright (C) International Business Machines Corp., 2006
-# Author:  <dykman@us.ibm.com>
+# Copyright (C) flonatel GmbH & Co. KG, 2009
+# Authors:  <dykman@us.ibm.com>
+#           Andreas Florath <xen@flonatel.org>
 
 # UDP tests to domU interface
 #  - creates two guest domains
 #  - sets up a single NIC on each on same subnet 
 #  - conducts udp tests to the domU IP address.
 
-# hping2 $domU_IP -2 -c 1 -d $size  
+# hping2 $domU_IP -1 -c 7 -d $size  
 #   where $size = 1, 48, 64, 512, 1440, 1500, 1505, 
 #                 4096, 4192, 32767, 65507, 65508
 
@@ -31,7 +33,7 @@ def netDomain():
         FAIL(str(e))
     return dom
     
-rc = 0
+fails = ""
 
 # Test creates 2 domains, which requires 4 ips: 2 for the domains and 2 for
 # aliases on dom0
@@ -39,26 +41,36 @@ if xmtest_netconf.canRunNetTest(4) == False:
     SKIP("Don't have enough free configured IPs to run this test")
 
 # Fire up a pair of guest domains w/1 nic each
-src = netDomain()
-src_console = src.getConsole()
-dst = netDomain()
+guest1 = netDomain()
+guest1_console = guest1.getConsole()
+guest1_netdev = guest1.getDevice("eth0")
+guest1_ip = guest1_netdev.getNetDevIP()
+guest1_dom0_alias_ip = guest1_netdev.dom0_alias_ip
+guest2 = netDomain()
+guest2_console = guest2.getConsole()
+guest2_netdev = guest2.getDevice("eth0")
+guest2_ip = guest2_netdev.getNetDevIP()
+guest2_dom0_alias_ip = guest2_netdev.dom0_alias_ip
 
+def hping_cmd(ip, size):
+    return "hping2 " + ip + " -E /dev/urandom -1 -q " \
+             + "-c 7 --fast -d " + str(size) + " -N " + str(size)
+
+# Ping everything from guests
 try:
-    # Ping the victim over eth0
-    fails=""
-    dst_netdev = dst.getDevice("eth0")
-    ip2 = dst_netdev.getNetDevIP()
     for size in pingsizes:
-        out = src_console.runCmd("hping2 " + ip2 + " -E /dev/urandom -2 -q "
-              + "-c 20 --fast -d " + str(size) + " -N " + str(size))
-        if out["return"]:
-            fails += " " + str(size) 
-            print out["output"]
+        for console in [(guest1_console, "Guest1Console"),
+                        (guest2_console, "Guest2Console")]:
+            for dest_ip in [guest1_ip, guest1_dom0_alias_ip,
+                            guest2_ip, guest2_dom0_alias_ip ]:
+                out = console[0].runCmd(hping_cmd(dest_ip, size))
+                if out["return"]:
+                    fails += " [%d, %s, %s]" % (size, console[1], dest_ip)
 except ConsoleError, e:
     FAIL(str(e))
 
-src.stop()
-dst.stop()
+guest1.stop()
+guest2.stop()
 
 if len(fails):
     FAIL("UDP hping2 failed for size" + fails + ".")